# Cargar librerías necesarias
library(plm)
library(readxl)
library(lmtest)
library(sandwich)
library(car)  # <- Añadido para VIF

# Establecer ruta del archivo Excel
ruta <- "C:/Users/ACER/Desktop/EAFIT/proyecto de grado/Soportes/Regresiones Pyton/Tesis GMM R/Base de datos renombrada final 18.05.2025.xlsx"

# Leer la hoja con los datos logarítmicamente transformados
datos <- read_excel(ruta, sheet = "4. BD Comp Media resumida log")

# Convertir variables categóricas
datos$Año <- as.numeric(datos$Año)
datos$NIT <- as.factor(datos$NIT)
datos$`TAMc` <- as.factor(datos$`TAMc`)

# Filtrar variables relevantes y convertir a panel
panel <- pdata.frame(datos, index = c("NIT", "Año"))

# Definir fórmula del modelo GMM con DF como variable dependiente
form_df <- DF ~ lag(DF, 1) + MEBITDA + PRO + LIQd + TAMa +
  `ΔAct` + RDC + EA + GIA + LA + RUV + ROA + TAMi + VRI | lag(DF, 2:3)

# Ejecutar modelo GMM (diferencias, dos pasos)
modelo_df <- pgmm(
  formula = form_df,
  data = panel,
  effect = "individual",
  model = "twosteps",
  transformation = "d"
)

# Mostrar resumen del modelo
summary(modelo_df)

# ----- Cálculo del VIF -----
# Usar solo la parte de regresión (sin instrumentos)
modelo_vif <- lm(DF ~ MEBITDA + PRO + LIQd + TAMa + `ΔAct` + 
                   RDC + EA + GIA + LA + RUV + ROA + TAMi + VRI,
                 data = panel)

# Calcular y mostrar VIF
vif(modelo_vif)
